package nespresso.servlets;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.*;

import nespresso.beans.*;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;



public class AdminuserServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	public HttpSession session;
    /**
     * Default constructor. 
     */
    public AdminuserServlet() {
       
    
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		/*
		 * si l'utilisateur tape l'adresse de la servlet directement dans la barre d'adresse, il est renvoyé 
		 * sur la page d'accueil !
		 */
		response.sendRedirect("nespresso.jsp");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	@SuppressWarnings({ "rawtypes", "unused" })
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Log log = LogFactory.getLog(AdminuserServlet.class);
		// on ouvre une session pour y mettre nos objets et pour protéger les pages
		session  = request.getSession(true);
		// on récupère les valeurs des champs du formulaire de la page de saisie des infos du compte
		request.setCharacterEncoding("UTF-8");
    	request.setAttribute("LoginMessage", "");
    	Enumeration params = request.getParameterNames();
    	String paramName 		= new String(); // Variable temporaire pour la récupération
    	String paramChamp 		= new String(); // Nom du champ à modifier
    	String paramValeur 		= new String(); // Valeur du champ
    	String paramidUser 		= new String(); // Valeur de l'id du User à modifier
    	String paramOperation 	= new String();
    	String paramId 			= new String();
    	String paramNom 		= new String();
    	String paramPrenom 		= new String();
    	String paramRole 		= new String();
    	String paramEmail 		= new String();
    	String paramLogin 		= new String();
    	while(params.hasMoreElements()) {
    		paramName = (String)params.nextElement();
    		if(paramName.equals("oper")) 	paramOperation	= request.getParameter(paramName);
    		if(paramName.equals("id"))		paramId			= request.getParameter(paramName);
    		if(paramName.equals("idUser")) 	paramidUser 	= request.getParameter(paramName);
    		if(paramName.equals("Nom"))		paramNom 		= request.getParameter(paramName);
    		if(paramName.equals("Prénom"))	paramPrenom		= request.getParameter(paramName);
    		if(paramName.equals("Rôle"))	paramRole 		= request.getParameter(paramName);
    		if(paramName.equals("Email"))	paramEmail 		= request.getParameter(paramName);
    		if(paramName.equals("Login"))	paramLogin 		= request.getParameter(paramName);
    	}

    	
		System.out.println("###### Infos User récupérées ######################");
		System.out.println("oper   => "+paramOperation);
		System.out.println("idUser => "+paramidUser);
		System.out.println("Nom    => "+paramNom);
		System.out.println("Prénom => "+paramPrenom);
		System.out.println("Rôle   => "+paramRole);
		System.out.println("Email  => "+paramEmail);
		System.out.println("###################################################");
		
		if(paramOperation.equals("edit")) {
			Base bu = new Base(); 
			if(!paramNom.equals(""))	bu.UpdateUser(paramidUser, "NOM", paramNom);
			if(!paramPrenom.equals("")) bu.UpdateUser(paramidUser, "PRENOM", paramPrenom);
			if(!paramRole.equals(""))	bu.UpdateUser(paramidUser, "ROLE", paramRole);
			if(!paramEmail.equals(""))	bu.UpdateUser(paramidUser, "EMAIL", paramEmail);
			bu.Free();
		}
		if(paramOperation.equals("add")) {
			Base bu = new Base();
			User u = new User("-NEW-", paramNom, paramPrenom, paramRole, paramLogin, paramEmail, null);
			u.InsertUser("ACHANGER");
			bu.Free();
		}
		if(paramOperation.equals("del")) {
			User u = new User(paramidUser, null, null, null, null, null, null);
			u.DeleteUser();
		}
    }
}